import type { Meta, StoryObj } from "@storybook/react";
import { action } from "@storybook/addon-actions";
import Dialog from "@/components/Dialog";
// @ts-ignore
import { useArgs } from "@storybook/preview-api";
import React, { useState } from "react";
import { Button, TextField } from "@mui/material";

// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
const meta = {
  title: "Ui/Dialog",
  component: Dialog,
  parameters: {
    // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
    layout: "centered",
  },
  // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
  tags: ["autodocs"],
  // More on argTypes: https://storybook.js.org/docs/api/argtypes
  argTypes: {
    // backgroundColor: { control: "color" },
  },
  // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
  args: {
    onOk: action("okProps:"),
    onCancel: action("okProps:"),
  },
} satisfies Meta<typeof Dialog>;

export default meta;
type Story = StoryObj<typeof meta>;

function render(args) {
  const [open, openSet] = useState(args.open);
  function onOk() {
    openSet(false);
  }
  function openDialog() {
    openSet(true);
  }
  return (
    <>
      <Button onClick={openDialog}>open dialog</Button>
      <Dialog {...args} open={open} onOk={onOk} onCancel={onOk} />
    </>
  );
}
export const Default: Story = {
  args: {
    content: "dialog text content ",
    open: false,
  },
  render,
};
export const inputContent: Story = {
  args: {
    title: "dialog input content",
    content: (
      <>
        <TextField
          key={"c-1"}
          id="outlined-basic"
          label="Outlined"
          variant="outlined"
        />
      </>
    ),
    open: false,
    okText: "confirm",
    cancelText: "cancel",
  },
  render,
};
